<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>欢迎使用 OpenResty!</title>
<style>
    body {
        width: 55em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
    table {
        font-family: verdana,arial,sans-serif;
        font-size:11px;
        color:#333333;
        border-width: 1px;
        border-color: #666666;
        border-collapse: collapse;
        margin-left: 2em;
    }
    table th {
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #dedede;
        text-align:left;
    }
    table td {
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #ffffff;
        text-align:left;
    }
</style>
</head>
<body>

<h2>欢迎使用 OpenResty</h2>

<p>
    <a target="_blank" href="https://openresty.org/cn/">OpenResty</a> 由国人 章亦春
    <a target="_blank" href="https://github.com/agentzh">@agentzh</a> 主力开发的一个基于
    <a target="_blank" href="https://nginx.org/">Nginx</a> 与
    <a target="_blank" href="https://www.lua.org/">Lua</a> 的高性能 Web 平台，
    其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。
    用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
</p>

<p>
    由于官方打包的 Windows 版本最多1024连接数限制，可以使用第三方打包的
    <a target="_blank" href="http://nginx-win.ecsds.eu/">NGINX for Windows</a>
    作为前端服务器
</p>

<h3>入门教程</h3>
<ul>
    <li>
        <a target="_blank" href="https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html">agentzh 的 Nginx 教程</a> |
        <a target="_blank" href="https://moonbingbing.gitbooks.io/openresty-best-practices/content/index.html">OpenResty 最佳实践</a>
    </li>
    <li>
        <a target="_blank" href="http://www.oschina.net/translate/nginx-setup">Nginx优化指南</a> |
        <a target="_blank" href="http://www.nginx.cn/76.html">nginx 基本配置与参数说明</a> |
        <a target="_blank" href="https://segmentfault.com/a/1190000004457479">HTTP协议详解</a>
    </li>
    <li>
        <a target="_blank" href="https://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html">Lua脚本语法说明</a> |
        <a target="_blank" href="https://www.runoob.com/lua/lua-tutorial.html">Lua 脚本语言中文教程</a> |
        <a target="_blank" href="http://lua-users.org/wiki/LuaDirectory">Lua-Users Wiki</a>
    </li>
</ul>

<h3>lua-resty 常用库</h3>

<table id="libs">
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-core">core</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-core/releases">v0.1.21</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/bungle/lua-resty-template">template</a></td>
        <td><a target="_blank" href="https://github.com/bungle/lua-resty-template/releases">v2.0</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-cjson">cjson</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-cjson/releases">v2.1.0.8</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/bungle/lua-resty-prettycjson">prettycjson</a></td>
        <td><a target="_blank" href="https://github.com/bungle/lua-resty-prettycjson/releases">v1.6</a></td>
    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-mysql">mysql</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-mysql/releases">v0.23</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-memcached">memcached</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-memcached/releases">v0.15</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-redis">redis</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-redis/releases">v0.28</a></td>
    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-lock">lock</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-lock/releases">v0.08</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-lrucache">lrucache</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-lrucache/releases">v0.10</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/thibaultcha/lua-resty-mlcache">mlcache</a></td>
        <td><a target="_blank" href="https://github.com/thibaultcha/lua-resty-mlcache/releases">v2.5.0</a></td>
    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-string">string</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-string/releases">v0.12</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/doujiang24/lua-resty-rsa">rsa</a></td>
        <td><a target="_blank" href="https://github.com/doujiang24/lua-resty-rsa/releases">v1.0.2</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/thibaultcha/lua-resty-jit-uuid">jit-uuid</a></td>
        <td><a target="_blank" href="https://github.com/thibaultcha/lua-resty-jit-uuid/releases">v0.0.7</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/bungle/lua-resty-random">random</a></td>
    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/pintsized/lua-resty-http">http</a></td>
        <td><a target="_blank" href="https://github.com/pintsized/lua-resty-http/releases">v0.16.1</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-dns">dns</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-dns/releases">v0.21</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-upload">upload</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-upload/releases">v0.10</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/hamishforbes/lua-resty-iputils">iputils</a></td>
        <td><a target="_blank" href="https://github.com/hamishforbes/lua-resty-iputils/releases">v0.3.0</a></td>
    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/cloudflare/lua-resty-cookie">cookie</a></td>
        <td><a target="_blank" href="https://github.com/cloudflare/lua-resty-cookie/releases">v0.1.0</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/bungle/lua-resty-session">session</a></td>
        <td><a target="_blank" href="https://github.com/bungle/lua-resty-session/releases">v2.24</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-websocket">websocket</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-websocket/releases">v0.08</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-limit-traffic">limit-traffic</a></td>
        <td><a target="_blank" href="https://github.com/openresty/lua-resty-limit-traffic/releases">v0.07</a></td>
    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/keplerproject/luafilesystem">lfs</a></td>
        <td><a target="_blank" href="https://github.com/keplerproject/luafilesystem/releases">v1.8.0</a></td>

        <th></th>
        <td><a target="_blank" href="https://github.com/sonoro1234/luafilesystem">lfs_ffi</a></td>
        <td>v0.1</td>

        <th></th>
        <td><a target="_blank" href="https://github.com/spacewander/luafilesystem">lfs_ffi</a> (linux)</td>
        <td>v0.3.0</td>

    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://github.com/starwing/luautf8">luautf8</a></td>
        <td><a target="_blank" href="https://github.com/starwing/luautf8/releases">v0.1.3</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/diegonehab/luasocket">luasocket</a></td>
        <td><a target="_blank" href="https://github.com/diegonehab/luasocket/releases">v3.0-rc1</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/leihog/hashids.lua">hashids</a></td>
        <td><a target="_blank" href="https://github.com/leihog/hashids.lua/releases">v1.0.6</a></td>
    </tr>
    <tr>
        <th></th>
        <td><a target="_blank" href="https://luapower.com/zlib">zlib</a></td>
        <td><a target="_blank" href="https://luapower.com/zlib/download">v1.2.7</a></td>
        <th></th>
        <td><a target="_blank" href="http://scilua.org/time.html">time</a></td>
        <td><a target="_blank" href="https://github.com/stepelu/lua-time/releases">v1.1.0</a></td>
        <th></th>
        <td><a target="_blank" href="https://github.com/ipipdotnet/ipdb-luajit">ipdb</a></td>
        <td><a target="_blank" href="http://www.ipip.net/download.html">IP库</a></td>
        <td colspan="3">试用版 (20190703)</td>
    </tr>
</table>

<script>
    var $libs = document.getElementById("libs");
    var $ths = $libs.getElementsByTagName("th");

    for (i=0; i<$ths.length; i++) {
        var $th = $ths[i];
        var text = (i+1) >= 10 && (i+1) || "0" + (i+1);
        $th.innerText = text;
    }

</script>

</body>
</html>
